package bancosys.tec.persist.span;

import bancosys.tec.persist.Persistable;
import bancosys.tec.utils.date.Date;

/**
 * {@link Persistable} que é uma vigencia
 * 
 * @author Daisy
 */
public interface SpanAwareBean extends Persistable {

    Date DATA_FIM = Date.MAX_VALUE;

    /**
     * Devolve a data de inicio desta vigencia - a data para a qual esta vigencia se inicia
     * 
     * @return {@link Date}
     */
    Date getDataInicio();

    /**
     * Devolve a data de fim desta vigencia
     * 
     * @return {@link Date}
     */
    Date getDataFim();

    /**
     * Altera a data de fim desta vigencia
     * 
     * @param dataFim {@link Date}
     */
    void setDataFim(Date dataFim);

    /**
     * Fixa o tipo e nome da propriedade de PK
     * 
     * @return Long
     */
    Long getId();

    /**
     * @param id {@link Long}
     */
    void setId(Long id);
}
